//using System; //using Android.Content; //using Android.Views; //using Android.Util; //using Android.Runtime; //using Android.Widget; //using Android.OS; //using Android.Views.Animations; //namespace Shared //{ // //已经全面检查了代码 // /// // /// 在滑动事件下,可显示隐藏些自定义视图 // /// // public class DrawerLayout : ViewGroup // { // AndroidDrawerLayout androidDrawerLayout; // //uint lineColor = 0x62818181; // ///// // ///// 背景颜色 // ///// // ///// The color of the background. // //public virtual uint LineColor // //{ // // get // // { // // return lineColor; // // } // // set // // { // // lineColor = value; // // byte r, g, b, a; // // r = (byte)(lineColor / 256 / 256 % 256); // // g = (byte)(lineColor / 256 % 256); // // b = (byte)(lineColor % 256); // // a = (byte)(lineColor / 256 / 256 / 256 % 256); // // lineLinearLayout.SetBackgroundColor(Android.Graphics.Color.Argb(a, r, g, b)); // // } // //} // /// // /// 宽度设置或读取 // /// // /// The width. // public override int Width // { // get // { // return base.Width; // } // set // { // base.Width = value; // if (!IsCanRefresh) // { // return; // } // var layoutParameters = androidDrawerLayout.LayoutParameters; // layoutParameters.Width = Width; // androidDrawerLayout.LayoutParameters = layoutParameters; // } // } // /// // /// 视图高度 // /// // /// The height. // public override int Height // { // get // { // return base.Height; // } // set // { // base.Height = value; // if (!IsCanRefresh) // { // return; // } // var layoutParameters = androidDrawerLayout.LayoutParameters; // layoutParameters.Height = Height; // androidDrawerLayout.LayoutParameters = layoutParameters; // } // } // Android.Widget.FrameLayout leftLinarLayout; // //Android.Widget.LinearLayout rightLinarLayout; // //Android.Widget.LinearLayout lineLinearLayout; // /// // /// 在滑动事件下,可显示隐藏些自定义视图 // /// // public DrawerLayout() // { // viewGroup = new Android.Widget.RelativeLayout(Application.Activity); // androidDrawerLayout = new AndroidDrawerLayout(Application.Activity, this) { }; // androidDrawerLayout.LeftToRightAction += () => // { // openLeftMenu(); // }; // realViewGroup = androidDrawerLayout; // leftLinarLayout = new Android.Widget.FrameLayout(Application.Activity) { Alpha = 0.0f }; // //rightLinarLayout = new Android.Widget.LinearLayout(Application.Activity) { Orientation = Android.Widget.Orientation.Horizontal, Alpha = 0.0f }; // //lineLinearLayout = new Android.Widget.LinearLayout(Application.Activity); // //LineColor = lineColor; // viewGroup.AddView(leftLinarLayout, new Android.Views.ViewGroup.LayoutParams(Android.Views.ViewGroup.LayoutParams.WrapContent, Android.Views.ViewGroup.LayoutParams.MatchParent)); // //viewGroup.AddView(rightLinarLayout, new Android.Views.ViewGroup.LayoutParams(Android.Views.ViewGroup.LayoutParams.WrapContent, Android.Views.ViewGroup.LayoutParams.MatchParent)); // viewGroup.AddView(androidDrawerLayout, new Android.Views.ViewGroup.LayoutParams(Android.Views.ViewGroup.LayoutParams.MatchParent, Android.Views.ViewGroup.LayoutParams.MatchParent)); // //viewGroup.AddView(lineLinearLayout, new Android.Widget.FrameLayout.LayoutParams(Android.Views.ViewGroup.LayoutParams.MatchParent, DensityUtil.Dip2Px(1), Android.Views.GravityFlags.Bottom)); // } // void openLeftMenu() // { // //if (androidDrawerLayout.isShowRight) // //{ // // hideRightMenu(); // // return; // //} // if (leftLinarLayout.ChildCount == 0) // return; // androidDrawerLayout.isShowLeft = true; // Android.Widget.FrameLayout.LayoutParams lp = (Android.Widget.FrameLayout.LayoutParams)leftLinarLayout.LayoutParameters; // lp.RightMargin = 0; // leftLinarLayout.LayoutParameters = lp; // leftLinarLayout.Alpha = 1.0f; // if (leftLinarLayout.Animation == null) // { // leftLinarLayout.Animation = new TranslateAnimation( // Dimension.RelativeToSelf, -androidDrawerLayout.LayoutParameters.Width, // Dimension.RelativeToSelf, 0, // Dimension.RelativeToSelf, 0, // Dimension.RelativeToSelf, 0); // leftLinarLayout.Animation.Duration = 200; // } // // Animation = leftUIView.Animation; // //Animation.Reset(); // //Animation.StartNow(); // leftLinarLayout.Animation.Reset(); // leftLinarLayout.Animation.StartNow(); // System.Console.WriteLine("DrawerLayout:openLeftMenu"); // // UIView.Animate (0.2f, 0.0f, UIViewAnimationOptions.BeginFromCurrentState, () => { // // contentView.X = (int)leftUIView.Frame.Width; // // leftUIView.Alpha = 1.0f; // // }, () => { // // // // }); // } // void hideLeftMenu() // { // androidDrawerLayout.isShowLeft = false; // Android.Widget.FrameLayout.LayoutParams lp = (Android.Widget.FrameLayout.LayoutParams)leftLinarLayout.LayoutParameters; // lp.RightMargin = androidDrawerLayout.LayoutParameters.Width; // leftLinarLayout.LayoutParameters = lp; // leftLinarLayout.Alpha = 0.0f; // // UIView.Animate(0.2f,0.0f,UIViewAnimationOptions.BeginFromCurrentState,()=>{ // // contentView.X=0; // // leftUIView.Alpha=0.0f; // // },()=>{ // // // // }); // } // /// // /// 子视图的宽度 // /// // //int subViewWidth = 100; // /// // /// 增加左边视图 // /// // /// View. // public void AddLeftView(View view) // { // leftLinarLayout.AddView(view.AndroidView, new Android.Views.ViewGroup.LayoutParams(androidDrawerLayout.LayoutParameters.Width, androidDrawerLayout.LayoutParameters.Height)); // leftLinarLayout.LayoutParameters.Width = androidDrawerLayout.LayoutParameters.Width; // view.Parent = this; // view.Width = androidDrawerLayout.LayoutParameters.Width; // view.Height = androidDrawerLayout.LayoutParameters.Height; // } // class AndroidDrawerLayout : Android.Widget.FrameLayout // { // View _view; // int mTouchSlop // { // get // { // var configuration = ViewConfiguration.Get(Context); // //最小的滑动距离 // return configuration.ScaledTouchSlop; // } // } // public AndroidDrawerLayout(Context context, View view) // : base(context) // { // _view = view; // } // float mLastX, mLastY; // internal bool isShowLeft; // internal bool isShowRight; // public Action RightToLeftAction; // public Action LeftToRightAction; // bool isActioned; // bool action(MotionEvent e) // { // switch (e.Action) // { // case MotionEventActions.Down: // //记录点击的最新X坐标 // mLastX = e.RawX; // mLastY = e.RawY; // Parent?.RequestDisallowInterceptTouchEvent(true); // break; // case MotionEventActions.Move: // var x = e.RawX; // var y = e.RawY; // var deltaX = x - mLastX; // var deltaY = y - mLastY; // if (Math.Abs(deltaY) < Math.Abs(deltaX)) // { // if (!isActioned) // { // //RightToLeftAction // if (deltaX < -mTouchSlop) // { // isActioned = true; // //parentDelay(true); // System.Console.WriteLine("DrawerLayout:DispatchTouchEvent:RightToLeft"); // RightToLeftAction?.Invoke(); // } // //LeftToRightAction // if (mTouchSlop < deltaX) // { // isActioned = true; // //parentDelay(true); // System.Console.WriteLine("DrawerLayout:DispatchTouchEvent:LeftToRight"); // LeftToRightAction?.Invoke(); // } // } // return true; // } // else // { // //上下滑动时,允许父控件的拦截 // if (4 < Math.Abs(deltaY)) // { // Parent?.RequestDisallowInterceptTouchEvent(false); // } // } // break; // } // return false; // } // /// // /// 执行OnInterceptTouchEvent和OnTouchEvent // /// // /// true事件已经处理false事件没有处理 // /// E. // public override bool DispatchTouchEvent(MotionEvent e) // { // System.Console.WriteLine($"{GetType()} Height->{Height} Width->{Width} DispatchTouchEvent->{e.Action}"); // if (e.Action == MotionEventActions.Down) // { // isActioned = false; // //还原允许拦截事件 // RequestDisallowInterceptTouchEvent(false); // } // return base.DispatchTouchEvent(e); // } // public override bool OnInterceptTouchEvent(MotionEvent e) // { // System.Console.WriteLine($"{GetType()} Height->{Height} Width->{Width} OnInterceptTouchEvent->{e.Action}"); // if (disallowIntercept) // { // return false; // } // if (action(e)) // { // return true; // } // return base.OnInterceptTouchEvent(e); // } // /// // /// 重写点击事件 // /// // /// true, if touch event was oned, false otherwise. // /// E. // public override bool OnTouchEvent(MotionEvent e) // { // System.Console.WriteLine($"{GetType()} Height->{Height} Width->{Width} OnTouchEvent->{e.Action}"); // if (!isActioned) // { // _view.TouchEvent(e); // } // action(e); // return true; // } // bool disallowIntercept; // public override void RequestDisallowInterceptTouchEvent(bool disallowIntercept) // { // this.disallowIntercept = disallowIntercept; // System.Console.WriteLine($"{GetType()} Height->{Height} RequestDisallowInterceptTouchEvent->{disallowIntercept}"); // base.RequestDisallowInterceptTouchEvent(disallowIntercept); // Parent?.RequestDisallowInterceptTouchEvent(disallowIntercept); // } // } // } //}